
以前老 nodejs 玩家肯定知道 express, koa Fastify 等相關框架可以快速啟動 web services
在 nodejs 的世界裡,能開一個 api 已經作為一個標配,當然這樣的事情在 bun 也一樣可以做到
以前 express 的賣點就是可以一行搞定 web serice
現在隨著時代進化,有了 bun 他基本上本身就可以做到一樣的事情,但效能相較於 express
基本上是碾壓般的存在
一行搞定的 HTTP Server
Bun.serve({
fetch(req) {
return new Response('一行搞定!輕輕鬆鬆')
}
});
我們迅速把服務起起來
bun run index.ts
不過因為資訊量蠻少的,基本上 Bun 預設服務會跑在 3000 port,我們可以用 curl 簡單 try 一下
curl http://localhost:3000
結果

我們這裡嘗試設定 port, hostname...etc
Bun.serve({
port: 8080,
hostname: "0.0.0.0",
fetch(req) {
return new Response("Running on port 8080");
},
});
這裏我們讓他起在 8080 port
Bun.serve({
routes: {
"/": () => new Response('首頁!'),
"/api/users": () => Response.json({ users: [{ id: 1, name: 'testUser01' }, { id: 2, name: 'testUser02' }] }),
"/api/user/:id": (req) => {
const { id } = req.params;
return Response.json({ id, name: `testUser${id}` });
}
},
fetch() {
return new Response('Not Found(找不到頁面唷)', { status: 404 })
}
});
跑起來
bun run index.ts
看看結果

Bun.serve({
async fetch(req) {
if (req.method === 'POST' && (new URL(req.url).pathname === '/api/data')) {
const body = await req.json();
return Response.json({ receive: body });
}
return new Response('請送 post 請求');
}
})
這裡我們看看結果

這裡最猛的是 bun 內建 websocket 可以使用,不用額外裝 ws 之類的套件
讓我們瞧一瞧怎麼使用
Bun.serve({
fetch(req, server) {
if (server.upgrade(req)) {
return;
}
return new Response('我這裡要玩 websocket 你走錯地方了!');
},
websocket: {
open() {
console.log('好誒連上了!');
},
message(ws, message) {
ws.send(`你收到訊息囉 : ${message}`);
},
close() {
console.log('斷開!!');
}
}
})
那我們這裡用 wscat 去測試 websocket
bunx wscat -c ws://localhost:3000
這樣就可以確認我們連上的 websocket 然後開始測試
我們看看結果

Bun.serve() 這篇走下來,可以感受到 Bun 在「開發體驗」跟「效能」這兩件事上都沒有妥協。
過去我們得靠 Express、Koa 這類框架,
再加上 ws、body-parser 等一堆套件才能拼湊出的功能——路由、JSON 處理、WebSocket——現在 Bun 幾乎是內建就給你了,而且效能還不是同個量級的對手。
從最一開始的一行程式碼啟動伺服器,到後面加上 routes 做出乾淨的路由結構,再到直接處理 POST 的 JSON body,
最後甚至不用額外安裝套件就能玩轉 WebSocket,整個過程幾乎沒有太多「痛點」。對於習慣 Node.js 生態圈的開發者來說,這種「原生內建、開箱即用」的體驗,
會讓人重新思考:也許以後寫後端服務,不一定要先裝一堆 dependencies 才能開始。
當然,這只是 Bun.serve() 的冰山一角,後續還有像是靜態檔案服務、TLS、Cluster 模式等更多進階功能值得挖掘。如果你也是被 Node.js 生態圈的「套件地獄」搞得有點疲乏,不妨找個小專案,實際上手玩玩看 Bun,說不定會有意想不到的驚喜。
我們下一篇見!
iThome鐵人賽